package com.idbk.chargestation.bean;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.util.Log;

import com.google.gson.annotations.SerializedName;

/**
 * 评论
 * @author lupc
 *
 */
public class JsonComment {
	
	public final static String TAG = JsonComment.class.getSimpleName();
	
	@SerializedName("id")
	public int id;
	
	@SerializedName("userId")
	public int userId;//用户id
	
	@SerializedName("name")
	private String name;//用户名称
	
	@SerializedName("imageURL")
	public String imageURL;//用户头像地址
	
	@SerializedName("commentDate")
	public Date commentDate;//评论时间
	
	@SerializedName("comment")
	public String comment;//评论内容
	
	@SerializedName("praiseInfos")
	public List<JsonCommentPraiseUser> praiseInfos;//点赞人列表
	
	@SerializedName("replyCount")
	public int replyCount;//回复总数
	
	@SerializedName("praiseFlag")
	public boolean praiseFlag;
	
	@SerializedName("mark")
	public int mark;//评分
	
	@SerializedName("pointId")
	public int pointId;//充电点id
	
	@SerializedName("pointName")
	public String pointName;//充电点名称
	
	@SerializedName("pointAddress")
	public String pointAddress;//充电点地址
	
	/**
	 * 评论发表的图片列表
	 */
	@SerializedName("commentImageURLs")
	public List<String> commentImageURLs;
	
	/**
	 * 用户已经通过的车主认证 的车标 url地址<br/>
	 * 注意：该值可能为空
	 */
	@SerializedName("ownerImageURLs")
	public List<String> carLogos;
	
	@SerializedName("replys")
	public List<JsonReply> replys;//回复内容数组
	
	/**
	 * 本地新增的回复
	 */
	public int mReplyCountOfAdd = 0;
	
	/**
	 * 回复列表 的当前页码（从1开始）
	 */
	public int mPageIndex = 1;
	
	public final static int PAGE_SIZE_REPLYS = 10;
	
	/**
	 * 剩余要读取的回复数
	 * @return
	 */
	public int getRemainReplys(){
		if(replys == null){
			return replyCount;//此时应该返回0
		}
		//这里要加上 本地新增的数据，否则数据对不上
		int remain = replyCount - replys.size() + mReplyCountOfAdd;
		Log.d(TAG, "剩余回复个数：" + remain);
		if(remain < 0){
			Log.e(TAG, "不合法情景：剩余回复数为负数，说明剩余回复计数错误！");
			return 0;//不应该出现此情况
		} else {
			return remain;
		}
	}
	
	public void addReply(JsonReply reply){
		mReplyCountOfAdd ++;
		//将数据添加到数据集
		if(replys == null){
			replys = new ArrayList<JsonReply>();
		}
		replys.add(reply);
	}
	
	public void addReplys(int total,int pageIndex,List<JsonReply> replys){		
		if(replys != null){
			mPageIndex = pageIndex;					
			//将数据添加到数据集
			if(this.replys == null){
				//不应该出现此情况
				Log.e(TAG, "不合法情景：加载了更多回复，但是原来的回复列表是空的！");
				this.replys = new ArrayList<JsonReply>();
			}
			this.replys.addAll(replys);			
		} else {
			// do nothing
		}
	}	
	
	public String getName() {
		return confusionUserName(name);
	}

	public void setName(String name) {
		this.name = name;
	}

	public static class JsonCommentPraiseUser {
		
		public JsonCommentPraiseUser(int id,String name){
			this.id = id;
			this.userName = name;
		}
		
		@SerializedName("id")
		public int id;//用户id
		
		@SerializedName("userName")
		private String userName;//用户名称

		public String getUserName() {
			return confusionUserName(userName);
		}

		public void setUserName(String userName) {
			this.userName = userName;
		}
				
	};
	
	public static String confusionUserName(String name){
		if(name == null || name.equals("")){
			return "用户名空";
		}
		boolean phoneNumber = true;
		if(name.length() == 11){
			for (char c : name.toCharArray()) {
				if(c < '0' || c > '9'){
					phoneNumber = false;
					break;
				}
			}
			if(phoneNumber){
				String t = name.substring(0, 3) + "****" + name.substring(7,11);
				return t;
			}
		}		
		return name;
	}
	
}

